package br.com.stefanini.schs.ejb.entity;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@NamedQueries({ 
	@NamedQuery(name = "Documento.consultarDocumentosFuncionarioJustificativa",query = "select d from Documento d where d.justificativa.idJustificativa = :idJustificativa and d.justificativa.funcionario.idFuncionario = :idFuncionario")
	})
@Table(name = "documento")
public class Documento {

	@Id
	@SequenceGenerator(name = "idDocumento", sequenceName = "idDocumento", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idDocumento")
	@Column(name = "idDocumento")
	private long idDocumento;

	@Column
	private String nomeArquivo;

	@Column
	private int status;

	@Column
	private long tamanho;
	
	@Column
	private String extensao;

	@Lob
	@Column(columnDefinition = "LONGBLOB", length = 900000)
	private byte[] arquivo;

	// ***********************************************************

	@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@PrimaryKeyJoinColumn(name = "fk_idJustificativa")
	private Justificativa justificativa;

	// ***********************************************************

	public long getIdDocumento() {
		return idDocumento;
	}

	public String getNomeArquivo() {
		return nomeArquivo;
	}

	public int getStatus() {
		return status;
	}

	public long getTamanho() {
		return tamanho;
	}

	public byte[] getArquivo() {
		return arquivo;
	}

	public Justificativa getJustificativa() {
		return justificativa;
	}

	public void setIdDocumento(long idDocumento) {
		this.idDocumento = idDocumento;
	}

	public void setNomeArquivo(String nomeArquivo) {
		this.nomeArquivo = nomeArquivo;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	public void setTamanho(long tamanho) {
		this.tamanho = tamanho;
	}

	public void setArquivo(byte[] arquivo) {
		this.arquivo = arquivo;
	}

	public void setJustificativa(Justificativa justificativa) {
		this.justificativa = justificativa;
	}

	public String getExtensao() {
		return extensao;
	}

	public void setExtensao(String extensao) {
		this.extensao = extensao;
	}

}
